#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Instruments;
using Cephei.QL;
using Cephei.QL.Termstructures;
namespace Cephei.QL.Experimental.Credit
{
    /// <summary> 
	/// ! The side of the swaption is set by choosing the side of the CDS. A receiver CDS option is a right to buy an underlying CDS selling protection and receiving a coupon. A payer CDS option is a right to buy an underlying CDS buying protection and paying coupon.
	/// </summary>
    [Guid ("DDC26BE6-5B13-4790-8244-C7D70F3A33B3"),ComVisible(true)]
	public interface ICdsOption : Cephei.QL.IOption
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		/// </summary>
		 Boolean IsExpired {get;}
        /// <summary> 
		/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		/// </summary>
		 Double RiskyAnnuity {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double AtmRate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double ImpliedVolatility(Double price, Cephei.QL.Termstructures.IYieldTermStructure termStructure, Cephei.QL.Termstructures.IDefaultProbabilityTermStructure probability, Double recoveryRate, Microsoft.FSharp.Core.FSharpOption<Double> accuracy, Microsoft.FSharp.Core.FSharpOption<UInt64> maxEvaluations, Microsoft.FSharp.Core.FSharpOption<Double> minVol, Microsoft.FSharp.Core.FSharpOption<Double> maxVol);
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Instruments.ICreditDefaultSwap UnderlyingSwap {get;}
    }   

    /// <summary> 
	/// ! The side of the swaption is set by choosing the side of the CDS. A receiver CDS option is a right to buy an underlying CDS selling protection and receiving a coupon. A payer CDS option is a right to buy an underlying CDS buying protection and paying coupon. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface ICdsOption_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    ICdsOption Create (Cephei.QL.Instruments.ICreditDefaultSwap swap, Cephei.QL.IExercise exercise, Microsoft.FSharp.Core.FSharpOption<Boolean> knocksOut, Cephei.QL.IPricingEngine QL_Pricer);
    }
}

